// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

package config

type V2DeprecationEnum string

const (
	// v3中的默认值。5.如果v2store包含有意义的内容，则发出警告。
	V2_DEPR_0_NOT_YET = V2DeprecationEnum("not-yet")
	// v3中的默认值。6.不允许有意义的v2状态。
	// V2文件是为v3维护的。5回滚。
	V2_DEPR_1_WRITE_ONLY = V2DeprecationEnum("write-only")
	// V2store如果找到，将被擦除！！！
	V2_DEPR_1_WRITE_ONLY_DROP = V2DeprecationEnum("write-only-drop-data")
	// V2store既不写也不读。使用此配置会阻止
	// 回滚到etcd v3的能力。5.
	V2_DEPR_2_GONE = V2DeprecationEnum("gone")

	V2_DEPR_DEFAULT = V2_DEPR_0_NOT_YET
)

func (e V2DeprecationEnum) IsAtLeast(v2d V2DeprecationEnum) bool {
	return e.level() >= v2d.level()
}

func (e V2DeprecationEnum) level() int {
	switch e {
	case V2_DEPR_0_NOT_YET:
		return 0
	case V2_DEPR_1_WRITE_ONLY:
		return 1
	case V2_DEPR_1_WRITE_ONLY_DROP:
		return 2
	case V2_DEPR_2_GONE:
		return 3
	}
	panic("Unknown V2DeprecationEnum: " + e)
}
